<?php
// 测试数据库连接

// 设置错误报告
ini_set('display_errors', 1);
ini_set('display_startup_errors', 1);
error_reporting(E_ALL);

// 加载配置
$config = require __DIR__ . '/config/config.php';

// 打印配置信息用于调试
print_r('数据库配置:');
print_r($config['database']);
echo '<br><br>';

// 尝试连接数据库

// 方法1: 当前使用的连接方式
$dsn1 = $config['database']['driver'] . ':path=' . $config['database']['path'];
echo '连接方式1 DSN: ' . $dsn1 . '<br>';
try {
    $db1 = new PDO($dsn1);
    $db1->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    echo '连接方式1 - 成功!<br>';
    // 测试创建表
    try {
        $db1->exec("CREATE TABLE IF NOT EXISTS test (
            id INTEGER PRIMARY KEY AUTOINCREMENT,
            name TEXT NOT NULL,
            created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
        )");
        echo '表 "test" 创建成功!<br>';
        // 测试插入数据
        $stmt = $db1->prepare("INSERT INTO test (name) VALUES (:name)");
        $stmt->execute(['name' => '测试数据 ' . date('Y-m-d H:i:s')]);
        echo '数据插入成功! 插入的ID: ' . $db1->lastInsertId() . '<br>';
        // 测试查询数据
        $stmt = $db1->query("SELECT * FROM test ORDER BY created_at DESC LIMIT 5");
        echo '最近5条数据:<br>';
        echo '<pre>';
        while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) {
            print_r($row);
        }
        echo '</pre>';
    } catch (PDOException $e) {
        echo '数据库操作失败: ' . $e->getMessage() . '<br>';
    }
} catch (PDOException $e) {
    echo '连接方式1 - 失败: ' . $e->getMessage() . '<br>';
}

echo '<br><br>';

// 方法2: 推荐的SQLite连接方式 (没有path=)
$dsn2 = $config['database']['driver'] . ':' . $config['database']['path'];
echo '连接方式2 DSN: ' . $dsn2 . '<br>';
try {
    $db2 = new PDO($dsn2);
    $db2->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    echo '连接方式2 - 成功!<br>';
} catch (PDOException $e) {
    echo '连接方式2 - 失败: ' . $e->getMessage() . '<br>';
}

echo '<br><br>';

echo '<h3>SQLite数据库文件信息:</h3>';
echo '文件路径: ' . $config['database']['path'] . '<br>';
if (file_exists($config['database']['path'])) {
    echo '文件存在<br>';
    echo '文件大小: ' . filesize($config['database']['path']) . ' 字节<br>';
    echo '文件权限: ' . substr(sprintf('%o', fileperms($config['database']['path'])), -4) . '<br>';
} else {
    echo '文件不存在<br>';
    // 尝试创建数据库文件
    if (touch($config['database']['path'])) {
        echo '文件已创建<br>';
        echo '创建后的文件权限: ' . substr(sprintf('%o', fileperms($config['database']['path'])), -4) . '<br>';
    } else {
        echo '文件创建失败，请检查目录权限<br>';
    }
}

// 修复建议
if (!file_exists($config['database']['path'])) {
    echo '<br><br><div style="background-color: #fff3cd; padding: 15px; border-radius: 5px;">';
    echo '<h4>修复建议:</h4>';
    echo '1. 确保PHP有写入数据库目录的权限<br>';
    echo '2. 考虑使用方法2的连接方式 (推荐)<br>';
    echo '3. 检查config.php中的数据库路径是否正确<br>';
    echo '</div>';
}
?>